/*
 * outils.h
 * projet Unix
 *
 * @authors Dogru Ismaïl <is.dogru@gmail.com>
 * @authors Pauchet Antoni <antonipauchet@gmail.com>
 *
 */

#if !defined (_OUTILS_H_)
#define _OUTILS_H_
#include <fcntl.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ipc.h>
#include <sys/socket.h>
#include <sys/select.h>
#include <sys/sem.h>
#include <sys/time.h>
#include <time.h>
#include <netinet/in.h>
#include <netdb.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <sys/uio.h>
#include <sys/wait.h>
#include <sys/select.h>
#include <sys/un.h>
#include <unistd.h>
#include <signal.h>
#include <regex.h>

/******************************* TIMER ****************************************/
#define DELAI 3
#define CONNEXION_TIMEOUT 30
#define NOM_TIMEOUT_SERV 40 /* Délai serveur en attente de noms */
#define TIMEOUT_CLI 60 /* Délai client pour introduire le nom */
#define CHOSE_TIMEOUT 3000
#define WAIT_DELAY 15
/******************************************************************************/

#define LOCK "lockfile"
#define DIFF_CONFIG 4
#define DIFF_REPARTITION 3
#define LISTENQ 128
#define MAXLINE 1024
#define REPONSE 133
#define MAX_JOUEURS 5
#define MINPLAYERS 2
#define NBRE_CARDS 10
#define BUFFSIZE 128
#define PION_SEPARATEUR ":"
#define PION_NON_TROUVE "?"
#define SERV_LOCK 90
#define SERV_CREATE_LOCK 91
#define MAX_FDP1 5
#define NEW_GAMER 2
#define LONG_NOM 56
/***********************************MESSAGES***********************************/
#define SEMAPHORE_SET_ID 20  /* pour dire qu'on recoit le semaphoreSetID */
#define SHARED_MEM 22     /* pour dire qu'on recoit le semaphoreSetID */
#define SHARED_MEM_RC 23
#define PIONS_RECUS 10  /* pour dire qu'on recoit les cartes du joueur */
#define BIENVENUE 88
#define DISTRIBUTION 2
#define MESSAGE 111
#define CLOSE 33
#define BEGIN 5
#define NUMERO 6
#define PRENOM 7
#define NOM 8
#define RATE 93
#define PION 11
#define TROUVE 12 /* le joueur a trouvé un de ses pions */
#define EFFACER_PION 13
#define GAGNANT 14 /* un joueur a gagné, on avertit les autres joueurs */
#define GAGNANT_PAR_DEFAUT 1 /* un joueur a gagné, on avertit les autres joueurs */
/********************************AFFICHAGE*************************************/
#define SEPARATEUR "\n********************************************************************************\n"
/******************************************************************************/
#define MAX_PIONS_PAR_JOUEUR 7
#define TOTAL_PIONS 28
#define VIDE 0
#define REPARTITION "777770544444"

/***********************************MACRO**************************************/
#define SYS(call) if((call) == -1) \
{perror(#call " :Error "); exit(1);}

#define SYSS(call) if((call) == -1) \
{perror(#call " :Error "); kill(getpid(),SIGINT);}
/* Macro pour tester si une mémoire est bien initialisée */
#define SYSM(call) if((call) == NULL) \
{perror(#call " :Error "); kill(getpid(),SIGINT);}
/* #define SYS(call) (((call) == -1) ? (perror(#call " :Error "),exit(1)) :0) */
#endif
